package com.example.demo.user.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 用户返回视图,向前端暴露安全字段。
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "用户响应数据")
public class UserResponse {

    /**
     * 用户主键 ID。
     */
    @Schema(description = "用户 ID", example = "1")
    Long id;

    /**
     * 登录账号。
     */
    @Schema(description = "用户名", example = "student01")
    String username;

    /**
     * 显示名称。
     */
    @Schema(description = "昵称", example = "张三")
    String nickname;

    /**
     * 角色。
     */
    @Schema(description = "角色", example = "USER")
    String role;

    /**
     * ZIP 配额。
     */
    @Schema(description = "ZIP 配额", example = "10")
    Integer zipQuota;

    /**
     * 已使用次数。
     */
    @Schema(description = "已使用次数", example = "2")
    Integer zipUsed;

    /**
     * 创建时间戳。
     */
    @Schema(description = "创建时间", example = "2025-10-20 12:00:00")
    LocalDateTime createdAt;

    /**
     * 最近一次更新时间戳。
     */
    @Schema(description = "更新时间", example = "2025-10-21 08:00:00")
    LocalDateTime updatedAt;
}
